11963
13749
Lukket. Dette spørgsmål overholder ikke retningslinjerne for Stack Overflow. Det accepteres i øjeblikket ikke svar.
Vil du forbedre dette spørgsmål? Opdater spørgsmålet, så det er temaet for Stack Overflow.
Lukket for 4 år siden.
Forbedre dette spørgsmål
Jeg bygger en skinnende app, der behandler flere tekstfiler valgt af en bruger.
Outputtet er en enorm dataramme med millioner af rækker og snesevis af kolonner.
Jeg er interesseret nu i at tillade en bruger at interagere med at filtrere rækker, vælge kolonner og opsummere kolonner (ved at vælge fra en liste over funktioner som middelværdi, sd, maks, min, sum osv ...). Resultatet ville være en mindre dataramme, der opsummerer dataene pr. Brugervalg - dybest set skal jeg oprette en GUI, der implementerer en grundlæggende funktionalitet i dplyr-biblioteket.
Generelt ved jeg hvordan man gør det ved manuelt at oprette en masse GUI-elementer og føde dem til en serverfunktion med et antal dplyr-kommandoer. Da dette ser ud til at være en temmelig standardfunktionalitet (GUI, der filtrerer og opsummerer en dataramme), spekulerer jeg på, om der er noget "uden for hylden", før jeg begynder at bygge det fra bunden, som jeg kan bruge enten som den er eller som mit udgangspunkt . 
Jeg ved, du sagde, at rpivotTable ikke var helt hvad du leder efter, men jeg tror, ​​det kan konfigureres til at gøre noget af det tunge løft,
Her er et eksempel (ved hjælp af rpivotTable til manipulation, DT for at vise data.frame, rvest for at analysere den indre HTML fra DOM, der kan være et bedre dataformat til at sende bordobjektet fra klientsiden, men dette er et bevis på konceptet ):
ui.R
bibliotek (skinnende)
bibliotek (DT)
bibliotek (rpivotTable)
FullPage <- fluidPage (
DT :: dataTableOutput ('aSummaryTable'),
rpivotTableOutput ('RESULTATER')
)
Fuld side
server.R:
bibliotek (skinnende)
bibliotek (rpivotTable)
bibliotek (DT)
bibliotek (rvest)
funktion (input, output, session) {
# Lav nogle eksempler på data
qbdata <- reaktiv ({
expand.grid (LETTERS, 1: 3)
})
# Rengør html og opbevar den som reaktiv
summarydf <- eventReactive (input $ myData, {
input $ myData%>%
read_html%>%
html_table (fill = TRUE)%>%
# Det viser sig, at der er to tabeller i en rivottabel, vi vil have den anden
. [[2]]
})
# vis df som DT :: datatabel
output $ aSummaryTable <- DT :: renderDataTable ({
datatabel (summarydf (), bynavne = FALSE)
})
# Når konfigurationen opdateres, skal du ringe tilbage med indholdet af tabellen
output $ RESULTAT <- renderRpivotTable ({
rpivotTable (
qbdata (),
onRefresh =
htmlwidgets :: JS ("funktion (config) {
Shiny.onInputChange ('myData', document.getElementById ('RESULTATER'). InnerHTML);
} ")
)
})
}
|
Er det ikke det svar, du leder efter? Gennemse andre spørgsmål, der er mærket r dplyr skinnende, eller stil dit eget spørgsmål.